READ THIS, OFTEN OVERLOOKED: To document global objects (functions, enums, typedefs, ...) there must be a /** @file */ documenting comment in the file. For Python, turn OPTIMIZE_OUTPUT_JAVA to YES. CLI: doxygen -g generate default Doxyfile doxygen generate the documentation from the present Doxyfile DOXYFILE: PROJECT_NAME name of the project PROJECT_BRIEF brief summary of the project PROJECT_LOGO project logo file, should fiut into 55 x 200 pixels INPUT input source files and/or folders, separate with spaces RECURSIVE traverse the source directories recursively? (YES or NO) OUTPUT_DIRECTORY folder to save the documentation to EXTRACT_ALL document everything, even private and undocumented stuff (YES or NO) CLASS_DIAGRAMS generate class diagrams? (YES by default) CLASS_GRAPH generate class graphs? better than CLASS_DIAGRAMS (YES by default, YES overrides CLASS_DIAGRAMS) SOURCE COMMENTS: C-like: /** @file This documents a file. This has to be there in order for global elements (functions, typdefes, enums, ...) to be documented. */ /** @brief Brief doc for myClass. Detailed doc for myClass. */ class myClass { /// 3 '/'s for a one-line comment (BEFORE an element), or alternatively "//!" int myMember; int myMember2; ///< comment AFTER an element has an additional '<' int myMember3; /**< or like this */ /** Doc for myMethod. @param a Doc for parameter a. @param b Doc for parameter b. @return Doc for return value. */ int myMethod(int a, int b); }; Python: ## @package mypackage # Brief doc for mypackage. ## Brief doc for MyClass. # # Detailed doc for MyClass. class MyClass: ## Doc for myMember (doc AFTER the element is NOT supported). myMember = 0 ## Doc for myFunc # # @param a Doc for parameter a. # @param b Doc for parameter b. # @return Doc for return value. def myFunc(a, b): pass